package server

import (
	"encoding/json"
)

// Command 枚举定义所有命令类型
type Command int

const (
	JoinRoom                     = 1  //加入房间
	ConnectSuccess               = 3  //连接成功
	RoomJoinRoom                 = 4  //用户加入房间
	RoomLeaveRoom                = 5  //用户离开房间
	RoomRequestRoomOwner         = 7  //请求成为房主
	RoomRoomOwnerChange          = 8  //房主变更
	RoomChangePlayRoomFile       = 9  //更改播放文件
	RoomResponceRoomOwnerRequest = 10 //回应房主请求
	RoomChangePlayState          = 12 //更改播放状态
	RoomObjSynchronization       = 13 //对象同步
	RoomGetRoomPlayProgress      = 14 //新加入的客户端获取当前播放进度
	RoomSyncRoomPlayProgress     = 15 //同步播放进度
	RoomMultiObjSync             = 16 //多对象同步
	RoomRoomOwnerForcibly        = 17 //强制成为房主
)

// NetData 定义网络传输的数据结构
type NetData struct {
	Cmd  int    `json:"cmd"`
	Data string `json:"data"`
}

// JoinRoomInfo 定义加入房间的信息
type JoinRoomInfo struct {
	Room   string `json:"room"`
	UserID string `json:"userid"`
}

// ConnectInfo 定义连接信息
type ConnectInfo struct {
	UserID string `json:"userid"`
}

// RoomBroadcastInfo 定义房间广播信息
type RoomBroadcastInfo struct {
	// 根据需要添加字段
}

// ToJSON 将对象转换为JSON字符串
func ToJSON(v interface{}) string {
	data, err := json.Marshal(v)
	if err != nil {
		return ""
	}
	return string(data)
}

// FromJSON 从JSON字符串解析对象
func FromJSON(data string, v interface{}) error {
	return json.Unmarshal([]byte(data), v)
}
